package integer;

/**
 * 包装类
 * java提供了8个包装，分别回应8个基本类型
 * 由于基本类型是以值而非对象形式存在，因此没有面向对象特性，
 * 为了让基本类型可以参与面向对象开发，出现可8个包装类，目睹是让基本类型可以以对象形式表示
 */
public class IntegerDemo1 {
    public static void main(String[] args) {
        /*
        基本类型               包装类
        byte                 Byte
        short                Short
        int                  Integer
        long                 Long
        float                Float
        double               Double
        boolean              Boolean
        char                 Character
         */
      int num =128;//基本类型
        Integer i1=Integer.valueOf(num);
        Integer i2=Integer.valueOf(num);
        System.out.println(i1==i2);//false 超过1个字节
        System.out.println(i1.equals(num));//ture

        double dou =123.123;
        Double d1=Double.valueOf(dou);//Double的valueof内部就是new对象
        Double d2=Double.valueOf(dou);
        System.out.println(d1==d2);
        System.out.println(d1.equals(d2));
        /*
        数字类型的包装类都支持将其表示的数字以基本类型返回
        需要注意：与基本类型之间互相赋值一样。小类型复习hi给大类型可直接赋值。
        而大类型往小类型赋值则可能丢失精度
         */
        int in=i1.intValue();
        System.out.println(in);
        double dd=i1.doubleValue();
        System.out.println();
        //包装类定义了两个常量的取值范围
        int imax= Integer.MAX_VALUE;
        int imin= Integer.MIN_VALUE;
        System.out.println(imax);
        System.out.println(imin);
        //包装类可以将字符串解析为对应的基本类型，前提是该字符串正确描述了基本类型可以保存的值
        String line ="123";
        num=Integer.parseInt(line);
        System.out.println(num);
        dd =Double.parseDouble(line);
        System.out.println(dd);

    }
}
